package cn.felord;

import cn.felord.config.NewConfig;
import cn.felord.config.NewProperties;
import cn.felord.config.OnlyChangeUrl;
import cn.felord.wepay.common.exception.PayException;
import cn.felord.wepay.common.pay.PayConfig;
import cn.felord.wepay.common.util.Configuration;
import cn.felord.wepay.wechat.entity.WeChatPayConfig;

/**
 *  配置详解demo.
 *
 * @author Dax
 * @version v1.0.0
 * @since 2017 /8/28  18:04
 */


public class ConfigDemo {

    /**
     * The entry point of application.
     * <p>
     * 例子统一不加密  如要测试加密自行测试
     *
     * @param args the input arguments
     * @throws PayException the pay exception
     * @see cn.felord.config.OnlyChangeUrl
     * @see cn.felord.config.NewProperties
     * @see cn.felord.config.NewConfig
     */
    public static void main(String[] args) throws PayException {
//         完全采用默认配置   对应 ClientUtil.getPayProxy(Decryptable decryptable, PreBusinessService preBusinessService)
        PayConfig payConfig = new WeChatPayConfig.Builder(null, Configuration.class).build();
        System.out.println(payConfig);
//        采用 NewConfig 的配置 并显式声明 回调通知地址 覆盖了 配置中的地址
        PayConfig payConfig1 = new WeChatPayConfig.Builder(null, NewConfig.class).build();
        System.out.println(payConfig1);
//         采用了 新的配置文件     没有显示声明回调通知地址
        PayConfig payConfig2 = new WeChatPayConfig.Builder(null, NewProperties.class).build();
        System.out.println(payConfig2);
//        采用默认配置 仅仅修改回调通知
        PayConfig payConfig3 = new WeChatPayConfig.Builder(null, OnlyChangeUrl.class).build();
        System.out.println(payConfig3);
    }
}
